package com.water_work_form.controller;


import com.baomidou.mybatisplus.core.metadata.IPage;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.deepoove.poi.config.ConfigureBuilder;
import com.deepoove.poi.plugin.table.LoopRowTableRenderPolicy;
import com.water_work_form.entity.RecordDrugConsume;
import com.water_work_form.result.Result;
import com.water_work_form.result.ResultCodeEnum;
import com.water_work_form.result.ResultUtil;
import com.water_work_form.service.RecordDrugConsumeService;
import com.water_work_form.util.RandomIdUtil;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.io.IOException;
import java.util.*;
import java.util.stream.Collectors;

/**
 * <p>
 * 记录——在线仪表药剂领用登记表 前端控制器
 * </p>
 *
 * @author xuke
 * @since 2023-09-14
 */
@RestController
@RequestMapping("/record-drug-consume")
public class RecordDrugConsumeController {

    @Autowired
    RecordDrugConsumeService recordDrugConsumeService;

    /**
     * 记录——在线仪表药剂领用登记表 项目新增
     * @param recordDrugConsume 新项目
     * @return 返回相应的result，code 0为成功
     */
    @ApiOperation("新增")
    @PostMapping("/add")
    public Result addRecordDrugConsume(@RequestBody RecordDrugConsume recordDrugConsume){
        recordDrugConsume.setId(RandomIdUtil.createRandomId());
        recordDrugConsumeService.save(recordDrugConsume);
        return ResultUtil.success(ResultCodeEnum.SUCCESS, recordDrugConsume);
    }

    /**
     * 记录——在线仪表药剂领用登记表 项目查询
     * @param deviceName 仪器名称（device_name）
     * @param drugName 药剂名称（drug_name）
     * @param status 状态（status）
     * @param current 分页 当前页
     * @param size 分页 每页最大数据量
     * @return 返回相应数据
     */
    @ApiOperation("查看(分页)")
    @GetMapping("/pageList")
    public Result pageListRecordDrugConsume(@RequestParam("deviceName") String deviceName, @RequestParam("drugName") String drugName, @RequestParam("status") String status,
                                     @RequestParam("current") Integer current, @RequestParam("size") Integer size){
        IPage<RecordDrugConsume> page = recordDrugConsumeService.selectRecordDrugConsume(deviceName, drugName, status, current, size);
        return ResultUtil.success(ResultCodeEnum.SUCCESS, page);
    }

    /**
     * 记录——在线仪表药剂领用登记表 项目查询
     * @param deviceName 仪器名称（device_name）
     * @param drugName 药剂名称（drug_name）
     * @return 返回相应数据
     */
    @ApiOperation("查看导出列表")
    @GetMapping("/list")
    public Result listRecordDrugConsume(@RequestParam("deviceName") String deviceName, @RequestParam("drugName") String drugName){
        List<RecordDrugConsume> list = recordDrugConsumeService.listRecordDrugConsume(deviceName, drugName);
        return ResultUtil.success(ResultCodeEnum.SUCCESS, list);
    }

    /**
     * 记录——在线仪表药剂领用登记表 项目删除
     * @param id 需删除的项目id
     * @return 返回相应的result，code 0为成功
     */
    @ApiOperation("删除")
    @DeleteMapping("/delete")
    public Result deleteRecordDrugConsume(@RequestParam("id") Long id){
        recordDrugConsumeService.removeById(id);
        return ResultUtil.success(ResultCodeEnum.SUCCESS);
    }

    /**
     * 记录——在线仪表药剂领用登记表 项目更新
     * @param recordDrugConsume 更新的项目
     * @return 返回相应的result，code 0为成功
     */
    @ApiOperation("更新")
    @PostMapping("/update")
    public Result updateRecordDrugConsume(@RequestBody RecordDrugConsume recordDrugConsume){
        recordDrugConsumeService.updateById(recordDrugConsume);
        return ResultUtil.success(ResultCodeEnum.SUCCESS);
    }

    /**
     * 记录——在线仪表药剂领用登记表 基础表数据查询
     * @param name form表name
     * @return 返回相应数据
     */
    @ApiOperation("基础表数据查询")
    @GetMapping("/basicList")
    public Result listBasicDrugConsume( @RequestParam("name") String name ){
        Map<String,Object> map = recordDrugConsumeService.selectBasicDrugConsume(name);
        return ResultUtil.success(ResultCodeEnum.SUCCESS, map);
    }

    /**
     * 记录——在线仪表药剂领用登记表 全部数据导出
     * @param recordDrugConsumeList 需要导出的数据列表
     * @param deviceName 在线仪表名称
     * @param drugName 药剂名称
     * @return 返回相应数据
     * @throws IOException 异常
     */
    @ApiOperation("列表导出")
    @PostMapping(value = "/download-word")
    public Result downloadWordRecordDrugConsume(@RequestBody List<RecordDrugConsume> recordDrugConsumeList,@RequestParam("deviceName") String deviceName,@RequestParam("drugName") String drugName) throws IOException  {
        recordDrugConsumeService.downloadRecordDrugConsume(recordDrugConsumeList, deviceName, drugName);
        return ResultUtil.success(ResultCodeEnum.SUCCESS);
    }



}

